using System;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using PackTracker.Business;

namespace PackTracker.UserControls
{
	public partial class ItemMonitoramentoEditar : UserControl
	{
		protected void Page_Load(object sender, EventArgs e)
		{
			if (!IsPostBack)
			{
				itemMonitoramentoForm.DefaultMode = getItemMonitoramento().IsNew ? FormViewMode.Edit : FormViewMode.ReadOnly;
				ApplyAuthorizationRules();
			}
		}

		#region Metodos privados

		private void ApplyAuthorizationRules()
		{
			//itemMonitoramentoButton.Visible = PackTracker.Business.ItemMonitoramento.CanAddObject();
		}

		private void setItemMonitoramento(ItemMonitoramento itemMonitoramento, bool salvar)
		{
			if (salvar)
			{
				itemMonitoramento = itemMonitoramento.Save();
				ViewState["ItemMonitoramento"] = ItemMonitoramento.GetItemMonitoramento(itemMonitoramento.Id);
			}
			else
			{
				ViewState["ItemMonitoramento"] = itemMonitoramento;
			}
		}

		protected ItemMonitoramento getItemMonitoramento()
		{
			int itemMonitoramentoId = 0;
			ItemMonitoramento itemMonitoramento = ViewState["ItemMonitoramento"] as ItemMonitoramento;

			if (itemMonitoramento == null)
			{
				if (!String.IsNullOrEmpty(Request.QueryString["ItemMonitoramentoId"]))
					int.TryParse(Request.QueryString["ItemMonitoramentoId"].ToString(), out itemMonitoramentoId);

				itemMonitoramento = (itemMonitoramentoId == 0) ? ItemMonitoramento.NewItemMonitoramento() : ItemMonitoramento.GetItemMonitoramento(itemMonitoramentoId);
				ViewState.Add("ItemMonitoramento", itemMonitoramento);
			}
			return itemMonitoramento;
		}

		#endregion

		#region ItemMonitoramentoForm

		protected void itemMonitoramentoForm_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
		{
			ItemMonitoramento itemMonitoramento = getItemMonitoramento();
			Csla.Data.DataMapper.Map(e.NewValues, itemMonitoramento, "Id");
			setItemMonitoramento(itemMonitoramento, true);
			
			itemMonitoramentoForm.DefaultMode = FormViewMode.ReadOnly;
            itemMonitoramentoForm.DataBind();
		}
		
        protected void itemMonitoramentoForm_ItemCommand(object sender, FormViewCommandEventArgs e)
        {
            switch (e.CommandName)
            {
                case "Cancel":
                    itemMonitoramentoForm.DefaultMode = FormViewMode.ReadOnly;
                    itemMonitoramentoForm.DataBind();
                    break;
                case "Edit":
                    itemMonitoramentoForm.DefaultMode = FormViewMode.Edit;
                    ApplyAuthorizationRules();
                    break;
            }
        }
        
        protected void itemMonitoramentoForm_ItemDeleting(object sender, FormViewDeleteEventArgs e)
        {
            ItemMonitoramento.DeleteItemMonitoramento(getItemMonitoramento().Id);
        }
		
		#endregion
		
		#region DataSources

		protected void itemMonitoramentoDataSource_SelectObject(object sender, Csla.Web.SelectObjectArgs e)
		{
			e.BusinessObject = getItemMonitoramento();
		}

		protected void idItemPedidoListDataSource_SelectObject(object sender, Csla.Web.SelectObjectArgs e)
		{
			e.BusinessObject = ItemPedidoCollection.GetItemPedidoCollection();
		}

		protected void idMonitoramentoListDataSource_SelectObject(object sender, Csla.Web.SelectObjectArgs e)
		{
			e.BusinessObject = MonitoramentoCollection.GetMonitoramentoCollection();
		}

		#endregion
		
    }
}
